<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>let 与 const</title>
</head>
<body>
    <script>
        // es5
        var num = 10
        var name = "shane"
        console.log(num,name)

        var num = 30
        console.log(num)

        // es6 let 和 const
        // 一、 let声明变量
        // let 与 var
        //1. let 不允许重复声明变量 var可以重复声明变量并且可以覆盖
        //2. let 不允许声明提升  var可以声明提升
        //3. let 声明变量支持作用域的限制， var 不受限制
        //4. var 声明的变量会挂载到顶层对象上， let不会

        //我可以在声明之前使用，这个变量叫做声明提示
        // console.log(age);
        // var age = 14;

        // if(true){ //python 与 java
        //     var a = 10
        //     let b =20
        // }
        // console.log(a);
        // console.log(b);

        //二、const 声明变量
        // const 与 var 与 let
        // 1.const 不能重复声明常量
        // 2.const 不支持声明提升
        // 3.const 常量受代码块限制，产生独立作用域
        // 4.const 不挂载到顶层对象
        //5. const 与let的差别：let可以声明的时候不赋值，const要赋值
        //const 声明的常量不能被改变

    </script>
</body>
</html>